# -*- coding: cp1252 -*-
from Class_Recurso import *
from Class_ConexaoDB  import *
from Class_ItemRecurso import *

class GerenciadorItemRecurso:
    def __init__(self):
        self.Conexao = ConexaoDB()
    
    #metodo para cadastrar um recurso por completo no banco de dados
    #Retorna - True ou False
    def CadastrarItemRecurso(self, ItemRecurso, Evento):
        
        IdRecurso = ItemRecurso.GetRecurso().GetID()
        Preco = ItemRecurso.GetPreco()
        Quantidade = ItemRecurso.GetQuantidade()
        Status = ItemRecurso.GetStatus()

        comando = '''
INSERT INTO Item_Recurso (Id_Recurso, Preco, Quantidade, status) VALUES ('%s','%s','%s','%s')
'''%(IdRecurso, Preco, Quantidade, Status)
        confirmacao = self.Conexao.ExecutarComando(comando)
        

        if confirmacao == True:
            
            confirmacao = self.CadastrarEventoRecurso(Evento)
        return confirmacao
    
    def CadastrarEventoRecurso(self, Evento):
        comando = "SELECT Max(Id) FROM Item_Recurso"
        IdItemRecurso = self.Conexao.ExecutarComandoRetorno(comando)[0][0]
        
        IdEvento = Evento.GetID()
        
        comando = '''
INSERT INTO evento_recurso (Id_Evento, Id_Item_Rec) VALUES ('%s','%s')
'''%(IdEvento, IdItemRecurso)
        confirmacao = self.Conexao.ExecutarComando(comando)

        
        return confirmacao
    
    def ExcluirItemRecursoPorEvento(self, Evento):
        Id = Evento.GetID()
        comando = '''
Select Id_Item_Rec FROM evento_recurso WHERE Id_evento = '%s'
'''%(Id)
        dados = self.Conexao.ExecutarComandoRetorno(comando)
        if len(dados) <> 0:
            lista = list(dados)
        
    
            for i in lista:
                comando = '''
        DELETE FROM item_recurso WHERE Id = '%s'
        '''%(i[0])
                confirmacao = self.Conexao.ExecutarComando(comando)
    
            
            comando = '''
    DELETE FROM evento_recurso WHERE Id_evento = '%s'
    '''%(Id)
            confirmacao = self.Conexao.ExecutarComando(comando)

    

    def PesquisarItemRecursoPorRecurso(self, Recurso):
        
        
        Id = Recurso.GetID()
        comando = '''
SELECT * FROM Item_Recurso WHERE Id_Recurso = '%s'
'''%(Id)
        dados = self.Conexao.ExecutarComandoRetorno(comando)

        return dados


    def PesquisarRecursoPorID(self, ID):
        comando = '''
SELECT * FROM Recurso WHERE ID = '%s'
'''%(ID)
        dados = self.Conexao.ExecutarComandoRetorno(comando)

        return dados
    
    def PesquisarTipoRecurso(self, Recurso):
        ID = Recurso.GetID()

        #Verifica se Recurso eh um acessorio
        comando = '''
        SELECT * FROM acessorio WHERE id_recurso LIKE '%s'
        '''%(ID)
        dados = self.Conexao.ExecutarComandoRetorno(comando)
        
        if len(dados) <> 0:
            Recurso.SetTipo('acessorios')
            return Recurso
        else:
            
            #Verifica se Recurso eh um decoracao
            comando = '''
            SELECT * FROM decoracao WHERE id_recurso LIKE '%s'
            '''%(ID)
            dados = self.Conexao.ExecutarComandoRetorno(comando)
        
            if len(dados) <> 0:
                Recurso.SetTipo('decoracao')
                return Recurso
            else:

                #Verifica se Recurso eh um outro
                comando = '''
                SELECT * FROM outro WHERE id_recurso LIKE '%s'
                '''%(ID)
                dados = self.Conexao.ExecutarComandoRetorno(comando)
                if len (dados) <> 0:
                    Recurso.SetTipo('outro')
                    return Recurso
                else:

                    #Verifica se Recurso eh um bebida
                    comando = '''
                    SELECT * FROM bebida WHERE id_recurso LIKE '%s'
                    '''%(ID)
                    dados = self.Conexao.ExecutarComandoRetorno(comando)
                    if len(dados) <> 0 :
                        Recurso.SetTipo('bebidas')
                        return Recurso
                    else:

                        #Verifica se Recurso eh um comida
                        comando = '''
                        SELECT * FROM comida WHERE id_recurso LIKE '%s'
                        '''%(ID)
                        dados = self.Conexao.ExecutarComandoRetorno(comando)

                        if len(dados) <> 0:
                            Recurso.SetTipo('comidas')
                            return Recurso
                        else:

                            #Verifica se Recurso eh um decoracao
                            comando = '''
                            SELECT * FROM servico WHERE id_recurso LIKE '%s'
                            '''%(ID)
                            dados = self.Conexao.ExecutarComandoRetorno(comando)
                            if len(dados) <> 0:
                                Recurso.SetTipo('servico')
                                return Recurso
                            else:
                                return None
                
                
                
        
        
    
    def PesquisarRecursosPorEvento(self, Evento):
        IdEvento = Evento.GetID()

        #Seleciona todos os ID's dos itens de um determinado evento
        comando = '''
SELECT * FROM evento_recurso WHERE id_evento LIKE '%s'
'''%(IdEvento)
        dados = self.Conexao.ExecutarComandoRetorno(comando)
        
        l = []
        ListaDados = []
        ListaRecursos = []
        ListaItemRecurso = []
        for i in dados:
            
            #Seleciona todos ID's dos Recursos de um determinado item
            comando = '''
    SELECT Id_recurso FROM item_recurso WHERE Id LIKE '%s'
    '''%(i[1])
            dados = self.Conexao.ExecutarComandoRetorno(comando)
            
            l.append(dados[0][0])

        #Seleciona todos os Dados de um determinado Recurso

        for i in l:
            comando = '''
SELECT * FROM recurso WHERE id LIKE '%s'
'''%(i)
            dados = self.Conexao.ExecutarComandoRetorno(comando)
            
            ListaDados.append(dados[0])


        #cria Lista Objetos tipo Recurso
        for i in ListaDados:
            R = Recurso(i[1], i[2], None)
            R.SetID(i[0])
            R = self.PesquisarTipoRecurso(R)
            print R.GetTipo()
            ListaRecursos.append(R)

        #Cria Lista Objetos tipo ItemRecurso
        for i in ListaRecursos:
            comando = '''
SELECT * FROM item_recurso WHERE id_recurso LIKE '%s'
'''%(i.GetID())
            dados = self.Conexao.ExecutarComandoRetorno(comando)
            IR = ItemRecurso(i, dados[0][2], dados[0][3], dados[0][4])
            ListaItemRecurso.append(IR)
            

        return ListaItemRecurso
        
